Skip to content

add Ploro, App hosting#1344

Open
benarmstead wants to merge 4 commits into
Domain-Connect:masterfrom
benarmstead:add-ploro-dev-hosting
Open

add Ploro, App hosting#1344
benarmstead wants to merge 4 commits into
Domain-Connect:masterfrom
benarmstead:add-ploro-dev-hosting

Conversation

@benarmstead

@benarmstead benarmstead commented Jul 8, 2026

Copy link
Copy Markdown

Description

New template ploro.dev.hosting.json for Ploro (ploro.dev), a multi-tenant
app-hosting platform. It connects an operator's external subdomain to their Ploro
app in one click: a routing CNAME to the Cloudflare-for-SaaS custom-hostname
target, plus the custom-hostname ownership TXT (_cf-custom-hostname) and the ACME
DCV TXTs (_acme-challenge) that pre-validate the HTTPS certificate. All four
values are issued per hostname and passed as template variables on the apply URL.

hostRequired is true because the routing record is a CNAME, which cannot live at
a zone apex — the flow is offered for subdomains only.

Synchronous apply requests are signed: the template sets
syncPubKeyDomain: ploro.dev, every apply URL carries sig (RS256 over the full
query string excluding sig/key) and key=_dck1, and the public key is
published as TXT records at _dck1.ploro.dev in the spec's multi-record format.

Type of change

  • New template
  • Bug fix (non-breaking change which fixes an issue in the template)
  • New feature (non-breaking change which adds functionality to the template)
  • Breaking change (fix or feature that would cause existing template behavior to be not backward compatible)

How Has This Been Tested?

Please mark the following checks done

  • Template functionality checked using Online Editor
  • Template file name follows the pattern <providerId>.<serviceId>.json
  • resource URL provided with logoUrl is actually served by a webserver

Note: the template also passes the official dc-template-linter
(-tolerate warn, exit 0); the only remaining message is one info-level
note — DCTL1021 (_cf-custom-hostname is a Cloudflare-specific underscore TXT
host, not in the IANA list). logoUrl (https://ploro.dev/favicon.ico) returns
200 image/svg+xml.

Checklist of common problems

  • syncPubKeyDomain is set — set to ploro.dev. Apply URLs are signed (RS256)
    and the verification key is served from _dck1.ploro.dev TXT records.
  • warnPhishing is not set alongside syncPubKeyDomainwarnPhishing is not set.
  • syncRedirectDomain is set whenever the template uses redirect_uri — set to ploro.dev.
  • no TXT record contains SPF content — none present.
  • txtConflictMatchingMode is set on TXT records that must be unique — set to All on all three TXT records.
  • no variable is used as a bare full record value unless necessaryjustified: %owntxt%, %dcv1% and %dcv2% are opaque tokens whose exact value is dictated verbatim by Cloudflare-for-SaaS ownership verification and by the ACME (DCV) challenge respectively; no fixed prefix is permitted by those protocols.
  • no bare variable is used as the full host label — all TXT hosts are fixed (_cf-custom-hostname, _acme-challenge); the CNAME host is @.
  • no variable is used in the host field to create a subdomain — the subdomain is carried via the host apply parameter (hostRequired: true).
  • %host% does not appear explicitly in any host attribute.
  • essential is set on records the user may need to modify — N/A; every record is required for the connection to function, none is safe to remove.

Online Editor test results

Editor test link(s):

Test ploro.dev/hosting example.com/shop

New template ploro.dev.hosting.json: one-click custom-subdomain connection
for the Ploro app-hosting platform (routing CNAME + Cloudflare-for-SaaS
ownership and ACME DCV TXT records). hostRequired; warnPhishing (unsigned
synchronous apply).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions github-actions Bot added PR description incomplete The PR description template was not filled in at all, altered or filled in improperly. Test links missing No test links from Online Editor provided hostRequired hostRequired is set labels Jul 8, 2026
@github-actions

github-actions Bot commented Jul 8, 2026

Copy link
Copy Markdown

JSON Filename Check Passed

@github-actions github-actions Bot added the no syncPubKeyDomain syncPubKeyDomain not set. Template is not secured. label Jul 8, 2026
@github-actions

github-actions Bot commented Jul 8, 2026

Copy link
Copy Markdown

JSON Schema Validation Passed

@github-actions github-actions Bot added the warnPhishing warnPhishing is set. Template is not secured. label Jul 8, 2026
@github-actions

github-actions Bot commented Jul 8, 2026

Copy link
Copy Markdown

Linter OK

ploro.dev.hosting.json

Level Code Note
info DCTL1021 missing from iana definitions

@github-actions github-actions Bot removed PR description incomplete The PR description template was not filled in at all, altered or filled in improperly. Test links missing No test links from Online Editor provided labels Jul 8, 2026
Comment thread ploro.dev.hosting.json Outdated
"logoUrl": "https://ploro.dev/favicon.ico",
"description": "Connects a domain to an app built on Ploro: routes traffic to the app and pre-validates its HTTPS certificate.",
"variableDescription": "target: the Cloudflare-for-SaaS routing hostname the CNAME points to. owntxt: the custom-hostname ownership token. dcv1/dcv2: the ACME (DCV) certificate-validation tokens. All four values are issued per hostname by Ploro and passed on the apply URL.",
"warnPhishing": true,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re-consider using syncPubKeyDomain.
Yes, the template has still a lot of variables and some providers require it by policy and the templates need to be updated.

@benarmstead benarmstead Jul 10, 2026

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for updating me
Done, swapped warnPhishing for syncPubKeyDomain: ploro.dev. Apply URLs are now signed per the spec: RS256 over the full query string (excluding sig/key), with key=_dck1 pointing at the public key TXT records at _dck1.ploro.dev (multi-record p=/a=/t=/d= format). I've also regenerated the Online Editor test link in the description against the updated template.

@github-actions github-actions Bot added the review issues Changes requested from PR review label Jul 8, 2026
@github-actions github-actions Bot added Test links missing No test links from Online Editor provided new review needed New commits arrived to PR after changes requested in the review and removed no syncPubKeyDomain syncPubKeyDomain not set. Template is not secured. warnPhishing warnPhishing is set. Template is not secured. review issues Changes requested from PR review Test links missing No test links from Online Editor provided labels Jul 10, 2026
@github-actions

Copy link
Copy Markdown

PR Description Check Passed

All required sections are filled in correctly.

Details
  OK  Type of change: 1/4 checkboxes ticked
  OK  How Has This Been Tested?: all 3 checkboxes ticked
  OK  Checklist of common problems: 10/10 checkboxes ticked
  OK  Online Editor test results: 1 link(s) found
  OK  Template coverage: all 1 template(s) covered
Labels to remove: Checklist of common problems not complete, Forged editor links, PR description incomplete, Test links missing

PR description check PASSED

@benarmstead benarmstead requested a review from pawel-kow July 10, 2026 09:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

hostRequired hostRequired is set new review needed New commits arrived to PR after changes requested in the review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants